package net.servir.diagnostico.web.controller;

import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import net.servir.diagnostico.model.IdentificacionParticipante;
import net.servir.diagnostico.model.PreguntaEncuesta;
import net.servir.diagnostico.model.jsp.JspEncuesta;
import net.servir.diagnostico.service.DiagnosticoService;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class EncuestaCalidadController {

	@Autowired
	private DiagnosticoService diagnosticoService;

	@RequestMapping("/encuestaCalidad.htm")
	public @ModelAttribute("encuesta")
	JspEncuesta ObtenerEncuesta(HttpServletRequest request,
			HttpServletResponse response) {
		JspEncuesta obj = new JspEncuesta();

		IdentificacionParticipante identParticipante = null;
		Number idParticipante = 0;
		// Obtenemos los datos de la session
		HttpSession sesion = request.getSession();
		String redirect = "";

		if (sesion.getAttribute("participante") == null) {
			redirect = "acceso.htm";
			try {
				response.sendRedirect(redirect);
			} catch (Exception e) {
				obj.setMensaje_usuario(e.getMessage());
			}
		} else
			identParticipante = (IdentificacionParticipante) sesion
					.getAttribute("participante");

		obj.setIdent_participante(identParticipante);

		if (identParticipante.getTipoAcceso().equals("examendiagnostico")) {
			idParticipante = identParticipante.getId_participante();
		}
		if (identParticipante.getTipoAcceso().equals(
				"resultadoexamendiagnostico")) {
			idParticipante = identParticipante.getId_participante_encuesta();
		}
		List<PreguntaEncuesta> preguntas = diagnosticoService
				.obtenerPreguntasEncuesta(idParticipante);

		obj.setPreguntas(preguntas);

		String accion = request.getParameter("accion");
		
		if (accion != null && !accion.equals("")) {
			// Recuperamos todas las alternativas seleccionadas

			for (PreguntaEncuesta preguntaEncuesta : preguntas) {
				String idPreguntaEncuesta = "P"
						+ preguntaEncuesta.getId_pregunta_encuesta().toString();
				if (request.getParameter(idPreguntaEncuesta) != null
						&& !request.getParameter(idPreguntaEncuesta).equals(""))
					preguntaEncuesta
							.setSecuencia_seleccionada(Integer.parseInt(request
									.getParameter(idPreguntaEncuesta)));
			}

			if (accion.equals("GRABAR")) {
				diagnosticoService.grabarRespuestaEncuesta(idParticipante,
						preguntas);
			}
			String sugerencia = request.getParameter("sugerencia");
			if (sugerencia != null && !sugerencia.equals(""))
				diagnosticoService.grabarSugerenciaEncuesta(idParticipante,
						sugerencia);

			String necesidad = request.getParameter("necesidad");
			if (necesidad != null && !necesidad.equals(""))
				diagnosticoService.grabarNecesidad(idParticipante, necesidad);

			if (identParticipante.getTipoAcceso().equals("examendiagnostico")) {
				try {
					response.sendRedirect("mensajeFinal.htm");
				} catch (Exception e) {
					obj.setMensaje_usuario(e.getMessage());
				}
			}
			if (identParticipante.getTipoAcceso().equals(
					"resultadoexamendiagnostico")) {
				try {
					response.sendRedirect("resultadodiagnostico.htm");
				} catch (Exception e) {
					obj.setMensaje_usuario(e.getMessage());
				}
			}
		}

		// diagnosticoService.grabarEnvioPrueba(idParticipante );
		// diagnosticoService.calcularPuntaje(Integer.parseInt(codParticipante));
		// diagnosticoService.enviarResultados(Integer.parseInt(codParticipante));
		return obj;
	}
}
